vzdelanifandomcom-20200214-history
36VPS Vybrané partie z operačních systémů
36VPS, přednáší ing. Šimánek Odkazy Stránky na serveru os Slajdy z přednášek Materiály ze cvičení Category: Faculty of Electrical Engineering Proč tato stránka vznikla *Aby poskytla výtah z výukových materiálů, odpovědi na minulé zkouškové otázky a pomohla tak při přípravě na zkoušku. Kontrolní otázky ze cvičení Týden 1. K čemu slouží soubor /etc/passwd ? * Je v něm uloženo UID každého uživatele [ANO] * Jsou tam uložena hesla pro přístup přes WWW a FTP NE * Je to program ke změně hesel uživatelů tohle je soubor v adresari /etc nikoliv program passwd * Je v něm uloženo GID primární skupiny každého uživatele [ANO] * Jsou v něm uloženy některé atributy uživatelů (název domovského adresáře) [ANO] * Jsou v něm uložena hesla uživatelů kdysi v něm bývalo hash hesla, dnes je z bezpečnostních důvodu v /etc/shadow * Je v něm uložen seznam uživatelů [ANO] Který uživatel má v operačních systémech UNIX administrátorská práva? (Jak takového uživatele poznáte?) * Právě ten, který má GID nulové GID s tim vůbec nesouvisí * Právě ten, který má UID nulové [ANO] * Právě ten, kterému to dovolil prezident republiky, popř. generální ředitel dané organizace NE * Právě ten, který má buď UID nulové nebo GID nulové musí mít UID 0 na GID nezáleží * Právě ten, který patří do skupiny "root" s GID=0 NE * Právě ten, jehož uživatelské jméno (login name) je "root" hlavní je UID * Právě ten, který má UID nenulové NE Týden 2. K čemu je užitečný runlevel S (singleuser mode)? * Používají ho běžní uživatelé k zamezení přístupu ze sítě (pokud chce uživatel pracovat jen sám). Lze použít jen z konzole. * Je automaticky aktivován při výpadku napájení. * Je obdobou volby "jen systém MSDOS" a znamená, že počítač pracuje naprosto stejně, ale bez grafického prostředí. * Používá ho administátor k odstanění zvlášť závažnách chyb systému. Spravne Jakým příkazem lze zastavit WWW server? * killall -HUP httpd * /etc/rc.d/init.d/www kill * killall www * killall httpd * /etc/init.d/httpd stop * service www stop * kill /etc/init.d/httpd * service httpd stop Spravne * /etc/rc.d/init.d/www stop Jaké PID má démon init * vždy 0 * menší než 0 * 42 * 1 Spravne * vetsi nez ! Mohou v jednom okamžiku běžet současně dva procesy init (/sbin/init)? * Ano [ANO, napriklad pri zmene runlevelu bezi jeden init s PID 1 a nove spusteni s pridelenym PID do doby nez prevezme vladu nad systemem] * Ne * Ano, ale jen když byl každý z těchto procesů spuštěn v jiném adresáři * Ano, ale jen když každy z těchto procesů pustil jiný uživatel Kterým příkazem lze změnit runlevel? * setrunlevel * runlevel * init Spravne * who -r * telinit Spravne Jak vzika proces init (demon) * pri startu systemu ho vytvori jadro Spravne * je prvnim procesem systemu, vytvori sam sebe * je spusten ze shellu * jako kazdy jiny proces, volanim systemove funkce fork() * je spusten pri startu systemu z nektereho rc-scriptu v /etc/rc.d * je spusten pri prihlaseni uzivatele Týden 3. Co je to /dev/md1 ? * Takový soubor neexistuje. * Speciální soubor reprezentující logický disk, který je vytvořen pomocí volume manageru. ANO * Speciální soubor, reprezentující fyzický disk, konkrétně první partition. Kolik primary partition lze vytvořit na jediném disku na platformě PC/x86? * libovolný počet, ale jen pokud existuje extended partition * 255 * žádnou, promary partitions nelze použít na počítači PC. * 4 ANO * 2 * 1 * 42 Jakým programem se obvykle mění tabulka rozdělení disku? * dd * fdisk ANO * partitionedit * newfs * mount Týden 4. Jakým příkazem odpojíme kořenový systém souborů * kill / * Kořenový systém souborů nelze za běhu OS odpojit ANO * rmdir / * detach / * umount / Jakého typu je soubor /dev/null? * neexistující soubor * symbolický link, který ukazuje na "nic" * socket * znakové zařízení ANO * nepojmenovaná roura * pojmenovaná roura Který konfigurační soubor obsahuje seznam systémů souborů, které se mají připojit při startu systému? * /etc/mtab * /bin/mount * /etc/fstab ANO * /proc/mounts * /etc/fsmount Kterým programem lze provést kontrolu systému souborů typu ext2? * fsck ANO * dump * checkfs * repairfs * mke2fs Týden 5. Které z těchto balíčků jsou nutné pro spuštění nainstalovaného editoru jstar ? * stdlib * ncurses * XFree86-libs * glibc * libc Postup: whereis jstar rpm -qf /usr/bin/jstar for i in `rpm -q --requires joe`; do echo $i; rpm -q --whatprovides $i; done Jakému balíčku patří soubor /usr/lib/X11/locale/iso8859-2/Compose * XFree86-Mesa-libGL * xorg-x11-libs * xorg-font-iso8859-2 * xorg-font-utils * XFree86-ISO8859-2-100dpi-fonts Postup: rpm -qf /usr/lib/X11/locale/iso8859-2/Compose Jaké capabilities nabízí balíček glib ? * libresolv-2.3.2.so * libglib-1.2.so.0 * libgmodule-1.2.so.0 * glibc-2.3.2.so Postup: rpm -q --provides glib Jaká informace je uvedena v položce Vendor v informacích o balíčku ntp? * David L. Mills * none * Red Hat, Corp. * Red Hat * Red Hat, Inc. Postup: rpm -qi ntp Týden 6. Lze využít program tar pro vytvoření komprimované zálohy domovských adresářů? * Ne * Ne, zálohu domovských adresářů nelze komprimovat. * Ano, ale jen spolu s komprimačním programem gzip * Ano, ale jen spolu s nějakým (libovolným) komprimačním programem [ANO, např. gzip,bzip2, ...] Jaké soubory obvykle označují následující přípony? Poznámky: Příponu .Z používá utilitka compress, zálohování probíhá tak, že nejprve se soubory zabalí do taru (zachovají se cestu, práva, čas, atd.) a výsledný tar se zabalí komprimačním programem. Většina unixových komprimátoru předpokládá, že komprimují pouze jeden soubor (náš *.tar). * .Z - soubor komprimovaný programem gzip * .Z - soubor komprimovaný programem bzip * .tgz - soubory komprimované programem gzip a následně archivované programem tar * .tar.Z - soubory komprimované programem compress a následně archivované programem tar * .tar - archiv vytvořený programem tar [ANO] * .tgz - archiv vytvořený programem tar a následně komprimovaný programem gzip [ANO] * .Z - soubor komprimovaný programem zip * .Z - soubor komprimovaný programem compress [ANO] * .tar.gz - soubory komprimované programem gzip a následně archivované programem tar * .tar.Z - archiv vytvořený programem tar a následně komprimovaný programem gzip * .Z - soubor komprimovaný programem zip * .tar.gz - archiv vytvořený programem tar a následně komprimovaný programem gzip [ANO] * .tgz - nekomprimovaný archiv vytvořený programem tgz Mezi hlavní výhody zálohovacího programu dump (oproti tar, nebo cpio) patří zejména: * Rychlejší zálohování. [ANO] * Zachování času posledního přístupu k souboru během zálohování. [ANO] * Podpora inkrementálního zálohování. [ANO] tar už inkrementální zálohy taky podporuje tak že se jedná o trošku zavádějící otázku viz: http://www.gnu.org/software/tar/manual/html_node/Incremental-Dumps.html * K zálohování nejsou třeba root práva. Mezi hlavní výhody zálohovacího programu tar (oproti dump) patří zejména: * Automatická komprese dat. * Zachování času posledního přístupu k souboru během zálohování. * Možnost interaktivní obnovy. [NE?] výše zavádějící * Rychlejší zálohování. Tady jsem nic nezatrhnul, protože pokud to mají oba není to výhoda a z nabízených možností nemá tar nic lepšího než dump. Týden 7. Jak lze jádru Linuxu předat informace o tom, kde má hledat kořenový systém souborů ? * Parametrem jádra mount= * Parametrem jádra /= * Parametrem jádra root= [ANO] * Nastavením implicitní hodnoty přímo v jádře ještě před bootem programem rdev [ANO] * Parametrem jádra mount / Kde lze v systému Linux nalézt informace o všech PCI zařízeních v počítači? * V souboru /proc/pci [ANO] * Podle existence speciálních zařízení v /dev: Přítomnost např. hardware ABC zjistíme podle existence souboru /dev/ABC * V různých souborech v adresáři /dev * V souboru /etc/pci Které volby (konfigurační přepínače) je třeba nastavit při konfiguraci jádra, chceme-li číst (tj. namountovat) běžné CD-ROM disky na SCSI CD-ROM mechanice. * CONFIG_ROMFS_FS (ROM file system support) * CONFIG_BLK_DEV_SR (SCSI CDROM support) [ANO] * CONFIG_CD_NO_IDESCSI (Support non-SCSI/IDE/ATAPI CDROM drives) * CONFIG_CHR_DEV_SG (SCSI generic support) [NE] * CONFIG_EXT3_FS (Ext3 journalling file system support) * CONFIG_ISO9660_FS (ISO 9660 file system support) [ANO] Týden 8. Jak zakážete použití dodatečných nastavení pro specifický adresář (tj. nastavení běžně definovaná v souborech .htaccess) ? * Uvedením direktivy AccessFileName .cokoliv, což způsobí přenastavení jména přístupového souboru na jméno začínající tečkou, které je skryté * Uvedením direktivy NoAccessFile * Uvedením direktivy AllowOverride None [ANO] * Uvedením direktivy UserAccessFile None V čem se liší virtuální server na bázi jmen od virtuálního serveru na bázi IP adres? * Virtuální servery na bázi IP adres vyžadují minimálně tolik různých IP adres, kolik je virtuálních serverů, zatímco servery na bázi jmen tolik adres nevyžadují. [ANO] * Virtuální servery na bázi IP adres fungují i bez platného DNS záznamu, zatímco virtuální servery na bázi jmen jsou bez DNS záznamu (případně jiné ekvivalentní služby - NIS, NIS+, LDAP) nedostupné. [ANO] * Virtuální servery na bázi jmen fungují dobře i s nižšími verzemi protokolu HTTP (ver 1.0 a starší) * Virtuální servery na bázi jmen musí používat dohromady jen jedinou IP adresu, zatímco servery na bázi IP adres mohou (a mají) adresy navzájem různé. * Virtuální servery na bázi IP adres musí běžet každý na jiném počítači, neboť používají jiné (různé) IP adresy. Mějme následující CGI script: #!/bin/bash echo "Content-type: text/plain" grep root /etc/passwd /etc/blbost Označte všechny příkazy, které je nutné vložit do tohoto scriptu mezi příkazy echo a grep, aby script zobrazoval v prohlížeči stejné informace, jako to dělá stejný příkaz grep na příkazové řádce. * umount /usr * echo "MIME-type: text/plain" * exec 2>&1 [ANO] * export TERM=vt100 * exit 0 * echo "" echo " " echo " " echo " " echo " " Navíc by se mělo tělo HTML dokumentu uzavřít i po skončení příkazu grep. * g) export DISPLAY=:0.0 * h) echo "Document-encoding: ascii" * i) echo "" [ANO] Týden 9. Srovnejte spojení pomocí ssh proti spojení pomocí telnet/rsh/rlogin, za předpokladu že nebudu používat (myšleno: předem nevyměním ani nijak neověřím) ani veřejné klíče počítačů, ani veřejné klíče uživatelů. V čem jsou rozdíly? * Spojení je skoro celé šifrované, ale pokud by útočník odposlechl všechny přenesené pakety (zejména počáteční dohadování klíčů), pak by mohl spojení rozluštit. * rsh/rlogin umožňuje nastavit přihlašování bez hesla (a autentizovat pomoci souboru .rhosts) narozdíl od ssh, které bez veřejných klíčů takto (autentizaci na zaklade pouhych neoverenych IP adres) nastavit nejde. * Při spojení ssh lze (i bez použití veřejných klíčů) vytvořit další zabezpečený (šifrovaný) TCP kanál (ssh tunel), který se dá využít pro jiné aplikace. [ANO] * Spojení ssh je po celou dobu šifrované, nelze ho tedy v odposlechnout pouhým odposlechem paketů. [ANO] Proč je výhodnější použít ssh místo rsh, nechceme-li používat autentizaci uživatele pomocí hesla? * Při SSH přístupu nemusí server důvěřovat IP adrese ani klíči počítače ze kterého se hlásí, ale může ověřit uživatele podle veřejného klíče uživatele. [ANO] * Při SSH má Klient jistotu, že komunikuje se správným serverem (pokud má k dispozici správný klíč). [ANO] * Protokol SSH může automaticky zprostředkovat spojení s X-serverem. [ANO] * Celé SSH spojení je šifrované, tj. ani odposlech všech paketů (včetně inicializačních) nepostačí k rozluštění přenášené informace. [ANO] Jak zabezpečíte protokol pop3 (čtení vzdálené pošty) pomocí ssh tunelu proti odposlechu? Řekněme, že POP3 server se jmenuje sss, lokální počítač se jmenuje ccc a uživatel má přístup na server sss pod USERNAME=uuu. Po vytvoření tunelu bude client používat adresu localhost a port 8888. * ssh -l uuu -L 110:sss:8888 sss * ssh -l uuu -L 8888:sss:110 ccc * ssh -l uuu -L 110:sss:8888 ccc * ssh -l uuu -L 8888:ccc:110 ccc * ssh -l uuu -R 8888:sss:110 ccc * ssh -l uuu -R 8888:sss:110 sss * ssh -l uuu -L 8888:sss:110 sss [ANO] * ssh -l uuu -R 110:ccc:8888 sss * ssh -l uuu -R 110:sss:8888 sss * ssh -l uuu -R 8888:ccc:110 ccc * ssh -l uuu -R 110:ccc:8888 ccc * ssh -l uuu -L 8888:ccc:110 sss * ssh -l uuu -L 110:ccc:8888 sss * ssh -l uuu -R 110:sss:8888 ccc * ssh -l uuu -L 110:ccc:8888 ccc * ssh -l uuu -R 8888:ccc:110 sss Týden 10. Co je nutné ke zřízení domény 2. řádu (xxxxxx.cz) na vlastním DNS serveru? (tak, aby byla viditelná ze světa) * Nakonfigurovat alespoň adresu www.domena.cz * Vytvořít jeden primární DNS server, sekundární nejsou potřeba. * Registrovat doménu u Internetové autority NIC-CZ, nebo zprostředkovaně přes jiný subjekt. [ANO] * DNS server(y) musí být připojeny stálým spojem (24 hodin denně, nikoliv např. dial-up s dynamickou IP). [ANO] * Vytvořit minimálně dva nezávislé primární (master) DNS servery. Kdo je vlastníkem domény kytara.cz ? * Webhosting s.r.o. * Libor Smékal [ANO] * Milan Šimánek * Fidel Castro * Jan Nedvěd whois kytara.cz Který soubor musíte změnit, aby na vašem počítači bylo jméno pokus.felk.cvut.cz překládáno na adresu 192.168.1.1 ? * /etc/hosts [ANO] * /var/named/felk.zone * /bin/ls * /etc/named.conf Týden 11. Jakým příkazem je možné vypsat aktuální nastavení směrovacích tabulek jádra linux routeru? * ifconfig * ip route [ANO] * netstat -r [ANO] * route [ANO] Které adresy patří do intervalu privátních adres (tedy v Internetu se nesměrují)? * 10.10.10.10 [ANO] * 10.11.12.13 [ANO] * 1.1.1.1 * 168.192.22.11 * 172.17.2.172 [ANO] Mějme virtuální počítač FC4 v K310 s běžnou konfigurací sítě a správnou maskou, ale bez směrovací položky default. Tedy počítač s takto nakonfigurovanou sítí: # ifconfig lo 127.0.0.1 # ifconfig eth0 10.0.6.1 netmask 255.255.255.0 # route del default Který z následujících příkazů umožní spojení s počítačem sunray2.felk.cvut.cz ? * route add -net 147.32.80.0 netmask 255.255.255.0 gw 147.32.80.37 * route add default gw 10.0.6.128 [ANO] * ifconfig eth0 147.32.80.37 * route add -net 147.32.80.0 netmask 255.255.255.0 gw 10.0.6.128 [ANO] * route add default gw 147.32.80.37 * route add -host 10.0.6.128 gw 147.32.80.37 * route add -host 147.32.80.37 gw 10.0.6.128 [ANO] * route add -net 147.32.80.36 netmask 255.255.255.252 gw 10.0.6.128 [ANO] * route add -net 147.32.80.32 netmask 255.255.255.240 gw 10.0.6.128 [ANO] Týden 12. K čemu slouží protokol ARP? * K nastavení směrovacích tabulek při propojení dvou (nebo více) sítí. * K přenosu dat po sériové lince (je to low-level transportní protokol). * Patří do kategorie směrovacích protokolů (jako je RIP, OSPF, BGP, ...) * Protokol pro vzdálenou správu pracovních stanic. * Ke zjištění platformově závislé adresy stanice, které je směrován právě odesílaný IP paket. [ANO] Který program lze využít k aktivaci protokolu CSLIP na sériové lince? (tj. k přepnutí line discipline) * pppconfig * ifconfig * pppd [ANO] * arp * minicom Který konfigurační soubor je třeba upravit, aby se spouštěl proces getty obsluhující sériovou linku (tj. abychom mohli na sériovou linku připojit klasický znakový terminál, ze kterého je možné se přihlásit do systému)? * /etc/ttyS0 * /etc/terminal * /etc/inittab [ANO] * /etc/termcap * /etc/services * /dev/modem * /etc/minicom.users * /etc/inetd.conf * $HOME/.dialdir Používá se ARP v případě spojení sériovou linkou? (tj. proudí ARP pakety skrz sériovou linku?) * Ano, protokol ARP po sériové lince běží jen při provozu Proxy-ARP. * Ano, ARP umožňuje získat IP adresu protější stanice, pokud známe jen její HW adresu. * Ne, po sériové lince protokol ARP neběží, ani při použití Proxy-ARP. Jde o point to point spojení. [ANO] * Ano, ARP umožňuje získat HW adresu protější stanice, pokud známe jen její IP adresu. Hromadná písemka 2006/2007 1. Co je obsahem adresáře /etc/init.d? 1 Kdy se tento adresář používá 2 2. Co je to i-node? 3 Jakým datovým typem je implementován (integer, reál, char, struct...)? 1 3. Je dán disk se systémem UFS. Na disku je v kořenovém adresáři soubor FILE o velikosti 1 MB a znakové zařízení ABC s major číslem 5 a minor 1. Dále je tam symbolický link SFILE na soubor FILE a hardlink na HABC na zařízení ABC. Načrtněte vnitřní dátové struktury UFS. 8 4. Zhodnoťte principiální rozdíl v zálohování programem tar a ufsdump. 2 Jmenujte dvě výhody tar 2 Jmenujte dvě výhody dump 2 5. Co je to kernel modul? 2 Čím se liší od knihovny? 2 Mohla by být stejná věc implementována knihovnou? Proč? 2 6. Jakou výhodu/kvalitu přináší portmapper (rpc.bind) 2 Která konkrétní služba portmapper využívá? 1 7. Co je to proc systém souborů? 2 K čemu slouží? 1 8. Uživatele jejichž jméno začíná znakem "a" lze vypsat např. takto: grep ^a /etc/passwd grep ^a < /etc/passwd V obou případech uveďte jaká systémová volání provede shell, aby docílil spuštění příkazu grap a zvýrazněte rozdíly. 6 Kolik parametrů získá příkaz grep? 1 Zkouškové otázky 2006/2007 Popište systémová volání kill, write, exec, dup, signal * kill - int kill(pid_t pid, int sig) pošle procesu, nebo skupině signál, pokud signál není uveden pošle signál 15 (TERM) * write - zápis bloku do souboru * dup - duplikuje file descriptor a přiřadí mu nejnižší volné číslo * exec - ... * signal - void (*signal (int sig, void (*disp)(int)))(int) přiřadí signálu sig handler disp (stačilo, parametry a návratové hodnoty nepožadoval) Tunelovani portu pres SSH - k cemu to je, jak to funguje Kolik je potřeba DNS serverů (nestačí jen server primární?), k cemu ktery je, jak si DNS nastavit, kdyz mam domenu od napr. americkeho registratora (jestli na DNS na Karlaku ci nejakou americkou). Co se stane s potomkem procesu, skončí-li jeho rodič? Co je "orphan proces" a co "zombie proces"? Je přeřazen pod proces init. Proces zombie je proces, který byl ukončen, ale nebyl doposud "uklizen". Odklizení provádí nadřízený proces. Program vytvoří nový proces, provade nějaké výpočty a pak na něj zavolá funkci wait(). Když však podřízený proces skončí dříve, než nadřízený proces zavolá funkci wait(), stane se z něj proces zombie. Až nadřízený proces zavolá funkci wait(), získá návratový kód podřízeného procesu, tento proces se zruší a funkce wait() se okamžitě vrátí. Z toho plyne, že je nezbytné zajistit, aby každý proces měl stále určeného rodiče (pokud by totiž rodič skončil dříve než potomek, nikdo by jeho návratový kód nepřebral a proces bu navždy zůstal nečinný v paměti). Pokud při ukončování procesu zjistíme že má potomky, ustanovíme jejich rodičem proces Init (aby je měl kdo odstranit z paměti) a nazýváme je sirotčí (orphan processes). Co je to SUID bit? K čemu se používá? Jmenujte alespoň 2 příklady kdy je nenahraditelný. Set UID bit je vlastnost souboru uložená v i-node. Pokud je nastaven, program po spuštění získá práva vlastníka souboru (tedy například roota). Příklady nenahraditelnosti: /bin/su, /bin/passwd, /bin/ping (posilani ICMP paketu) Sticky bit Je vlastnost i-nodu. Nastavení u adresáře znamená, že soubory uvnitř mohou být přejmenovány nebo odstraněny pouze svými vlastníky nebo rootem (SB má dokonce větší prioritu než nastavení práv adresáře). Toto můžete například využít, jestliže chcete mít nějaký společný adresář, kde mohou uživatelé společně sdílet nějaká data. SB se nastavuje pomocí chmod +t. U souborů a symlinků má jiný význam viz http://www.faqs.org/faqs/hp/hpux-faq/section-70.html Použití např. /tmp, /var/tmp Rozdíl a výhody tar a dump/restore dump/restore tar cpio inkrementální záloha ano, 9 úrovní ne ne (pomocí find?) vyžaduje roota ano ne ne zachovává čas posledního přístupu ano ne ne rychlejší ano ne ne relativní záloha záloha absolutní, obnova relativní nastavitelné nastavitelné libovolný FS ne, UFS ano ano interaktivní :-) obnova ano ne ne zadání souborů ? parametrem ze std vstupu 2005/2006 Co je to CORE, k čemu se používá, jak zabráníme jeho vytvoření? obsahuje stav procesu v době jeho pádu, je to dobré k ladění chyb. Jeho vytvoření zabráníme např. nastavením resource limitu na 0, nebo vytvořením adresáře core Kde je uloženo jméno souboru ? (možnosti i-node, datový blok, superblok) V datovém bloku adresáře. V jakém formátu je uložen v jádře čas? Longint sekundy od 1.1.1970 00:00:00 GMT Jaký je rozdíl mezi knihovní funkcí a funkcí jádra? Uveďte od každé 3 příklady. funkce jádra běží v privilegovaném modu. funkce jádra: open, read, write knihovní funkce: fopen, fread, fwrite,... Kde je uloženo NICE číslo procesu ? (možnosti v paměťové časti procesu, ve sdílené paměti jádra) Proč tomu tak musí být? Je uloženo v paměti jádra v tabulce procesů. NICE je statická priorita procesu. Musí to tak být protože proces může zapisovat kdekoliv do své paměti a mohl by si tak libovolně měnit prioritu. Může na jeden soubor ukazovat více filedescriptorů? Ano může. Jaký formát mají filedescriptory ? (možnosti struct, integer, pointer) Integer Může nějaký proces číst/zapisovat z/do souboru, aniž by ho předtím otevřel? Proč? Ano, může pokud zdědí filedescriptor od předka Kolik i-nodů a kolik datových bloků obsahuje : soubor, adresář, symbolický link, blokové zařízení ? Vždy uveďte min a max počet. i-node dat. bloky min max min max soubor 1 1 0 x adresář 1 1 1 x symb. link 1 1 1 1, teoreticky i více blokové zař. 1 1 0 0 symb. link 1 1 0 nekdy se zapise primo do i-nodu viz pozn. 1 pozn. 1: (Ext2FS) je to rychlejsi a nezabira to datovy blok navic :-) viz http://gama.fsv.cvut.cz/~soukup/vyuka/k153pg10/rok2002/semestr/vysledky/ilona_netolicka/index.htm Co jsou to privilegované instrukce ? Jmenujte alespoň 3 privilegované a 3 neprivilegované instrukce. Jsou to instrukce které se mohou vykovávat pouze v privilegovaném módu procesoru. Privilegované: halt, in, out Neprivilegované: mov, add, sub, div, shl, jmp Příkazy: a) cat /etc/passwd a b) cat < /etc/passwd - jak je provede shell? a) shell | + fork()| | exec("/bin/cat", "/etc/passwd") | wait() b) shell | + fork()| | | A = open("/etc/passwd",...); | dup2(A,0); #deskriptor 0 (standardní vstup) se pred prepsanim zavre | exec("/bin/cat"); wait() Když zadá místo /etc/passwd /etc/passwdx, jaká bude chybová hláška. takže u a) něco jako cat: cannot open file, b) shell: cannot open file Co je to ULIMIT nastavuje omezení na: počet potomků, velikost core, počet file descriptorů prikaz pro nastaveni enviroment pro procesy Možnosti meziprocesorové komunikace. Sdílená pamět, fronta zpráv, semafor, zprávy, pipe, signály, síťové sockety Lze zakomponovat funkci sinus do jádra? Lze Lze vyjmout funkci getuid z jádra a jedná se o privilegovanou funkci? Nejedná, ale potřebuje přistupovat k některým datům, které jsou uvnitř jádra, takže vyjmout ji nelze Jaké jsou standartní reakce na signály ukončení, ukončení s core, ignorování, zastavení, pokračování ale lze si předdefinovat vlastní handlery pomocí signal Které signály nelze předefinovat? KILL, STOP Může zabírat symbolický link více než jeden datový blok? Teoreticky může, ale stačí mu jeden. Dva procesy (každý na jiném terminálu). Jak můžou komunikovat přes pipe? A: mkfifo("jmeno") … chtěl vedet, ze alokuje i-node ve filesystemu A: fd1 = open("jmeno", "r") … chtěl vědět ze fd1 je int B: fd2 = open("jmeno", "w") A: write( fd1, co, kolik) … musí tam být kolik B: read( fd2, co, kolik) Když spustím B dříve => error. Takže se to řeší tak ze A musí B poslat signál. Ja si myslim, ze jsou prohozene "r" a "w" v open() Co dělá příkaz NOHUP a která systémová volání použije? NOHUP PRIKAZ - zajistí pokračování PRIKAZu i po mém odhlášení (No HangUp) Mohl by pouzit kernel call sigaction() ($man 2 sigaction nebo na Solarisu $man -s 2 sigaction). nebo sigprocmask() -- blokuje signaly -- ty pak cekaji na odblokovani (neztrati se). Kolik je v Linuxu signálů a) <10 b) <100 c) 2^32 d) záleží na velikosti swap signálů je něco mezi 20 a 30 (asi vice) Name Value Default Event SIGHUP 1 Exit Hangup (see termio(7I)) SIGINT 2 Exit Interrupt (see termio(7I)) SIGQUIT 3 Core Quit (see termio(7I)) SIGILL 4 Core Illegal Instruction SIGTRAP 5 Core Trace or Breakpoint Trap SIGABRT 6 Core Abort SIGEMT 7 Core Emulation Trap SIGFPE 8 Core Arithmetic Exception SIGKILL 9 Exit Killed SIGBUS 10 Core Bus Error SIGSEGV 11 Core Segmentation Fault SIGSYS 12 Core Bad System Call SIGPIPE 13 Exit Broken Pipe SIGALRM 14 Exit Alarm Clock SIGTERM 15 Exit Terminated SIGUSR1 16 Exit User Signal 1 SIGUSR2 17 Exit User Signal 2 SIGCHLD 18 Ignore Child Status Changed SIGPWR 19 Ignore Power Fail or Restart SIGWINCH 20 Ignore Window Size Change SIGURG 21 Ignore Urgent Socket Condition SIGPOLL 22 Exit Pollable Event (see streamio(7I)) SIGSTOP 23 Stop Stopped (signal) SIGTSTP 24 Stop Stopped (user) (see termio(7I)) SIGCONT 25 Ignore Continued SIGTTIN 26 Stop Stopped (tty input) (see termio(7I)) SIGTTOU 27 Stop Stopped (tty output) (see termio(7I)) SIGVTALRM 28 Exit Virtual Timer Expired SIGPROF 29 Exit Profiling Timer Expired SIGXCPU 30 Core CPU time limit exceeded (see getrlimit(2)) SIGXFSZ 31 Core File size limit exceeded (see getrlimit(2)) SIGWAITING 32 Ignore Reserved SIGLWP 33 Ignore Reserved SIGFREEZE 34 Ignore Check point Freeze SIGTHAW 35 Ignore Check point Thaw SIGCANCEL 36 Ignore Reserved for threading support SIGLOST 37 Exit Resource lost (for example, record-lock lost) SIGXRES 38 Ignore Resource control exceeded (see setrctl(2)) SIGJVM1 39 Ignore Reserved for Java Virtual Machine 1 SIGJVM2 40 Ignore Reserved for Java Virtual Machine 2 SIGRTMIN * Exit First real time signal (SIGRTMIN+1) * Exit Second real time signal ... (SIGRTMAX-1) * Exit Second-to-last real time signal SIGRTMAX * Exit Last real time signal Co je to ACL? Access Conrol List. Rozšiřuje práva souboru, pomoci těchto listů se může nastavit, který konkrétní uživatel do toho kterého souboru může zapisovat, číst atd.. Co delaji volani kill, exec, dup, fork, ... kill posila signaly kill(signal,pid) exec nahradi stavajici proces novym dup duplikuje zadany file descriptor a priradi mu nejnizsi volny file descriptor fork vytvori noveho potomka Co je to core a co to obsahuje je to soubor, ktery obsahuje stav procesu pri padu programu Co je to i-node, kde se nachazi a co obsahuje i-node bude ve filesystému a obsahuje: vlastníka, typ (file|directory|FIFO|block device|character device), čas poslední změny souboru, čas posledního přístupu k souboru, čas poslední změny daného i-node, přístupové práva, počet links na soubor (co hardlink to +1 link), velikost souboru, adresy datových bloků patřících souboru (více o datových blocích v i-node), (neobsahuje název souboru ten je v adresáři) zdroj: http://www.angelfire.com/myband/binusoman/Unix.html Jakym prikazem se provadi kontrola filesystemu ufs, ext2, nfs fsck Sdilena pamet mezi procesy - jak se vytvori, jak se pouziva BSD funkce mmap + obodby System V má IPC někdo doplňte co se o tom řikalo :-D Signaly - jak predefinovat handlery;co se stane,kdyz nejsou definovane; uvest priklad ctyr signalu a reakci na ne nastudujte tady: http://users.actcom.co.il/~choo/lupg/tutorials/signals/signals-programming.html Mohl by pouzit kernel call sigaction() 4 signaly -- viz vyse ARP protokol ARP slouží ke zjištění MAC adresy. Na lokální síti pošle stanice broadcast na IP a z dané IP se vrátí číslo MAC. jak nastavit quoty, quota http://linux.mikroservis.cz/quota.html (tam něco je :D) UMASK jak se spousti, kecy okolo UMASK je bitová maska pro nově vytvořené soubory, defaultní práva jsou v bashi pro soubory 666_8 a adresáře 777_8 . Nove vytvořený soubor má práva 666_8~AND~NOT(UMASK) . Např. UMASK = 0002_8 = 000000000010_2 , 666_8 = 000110110110_2 , 000110110110_2~AND~NOT(000000000010_2) = 0000110110110_2~AND~111111111111101_2 = 664_8 . nastaveni: umask 002 Nakreslit strukturu inode-datova oblast Zeptal se treba, kde je ulozenej korenovej adresar Meziproc. kom. : starej znamej priklad: tar | gzip , mel jsem to nakreslit a popsat. Co udela if(exec("/bin/ls")) printf("BLA -1") else printf ("BLA -2") Provede se pouze spuštění /bin/ls. Funkce exec nahradí kód procesu novým kódem, zde /bin/ls a návratová hodnota -1 se vrací jen v případě chyby, pokud by došlo k chybě, vypíše se "BLA -1", protože -1 je vyhodnocena jako true. if ( exec "/bin/ls" ) then printf "BLA-1\n"; #execuetd if () je zero else printf "BLA-2\n"; fi; vypise: bin GNUstep mail net-setup pok signals Desktop Mail mpi PAR public_html Xrootenv.0 BLA-1 vypise seznam souboru a adresaru v aktualnim adresari a BLA-1 mozna, ze v C to provede exec -- nahradi aktualni proces procesem /bin/ls, ten vypise seznam souboru a adresaru v aktualnim adresari a nic vic (ani BLA-1 ani BLA-2). To je proto, ze ty zavorky okolo exec to pusti v subshellu a v tom se to execne. Co udela printf("VYPIS %d",fork()); Návratová hodnota fork() je v rodiči PID potomka v potomkovy 0. Takže v rodičovy vypíše číslo PID potomka a v potomkovi vypíše nula. Co udela if (fork()) exit(); Návratová hodnota fork() je v rodiči PID potomka v potomkovy 0. Tedy zde se provede exit() pokud je návrat nenulový, takže rodičovský proces zkončí a potomek pokračuje dál. Jsou nejake specialni file descriptory? Mam adresar root v nem 100mb soubor AA hardlink HH a symbolicky link SS nakreslete jak to bude usporadano (cylinder group, tabulku inodu, pak inode od root, souboru AA a toho symbolickeho linku), datove bloky od (root,AA,SS). To ze soubor ma 100Mb je tam proto, ze jsou pak potreba na data ukazatele 0,1,2 urovne (to ze me vypacil pri zkousce). Co se stane pri rm HH: snizi se o 1 pocet hardlinku v inodu a smaze se HH z root zaznamu o jmenech soubotu Pipe na urovni jadra, jak to funguje (pak se ptal na pojmenovanou pipe). Vyjmenujte alespon 4 signaly Signal Value Action Comment ------------------------------------------------------------------------- SIGHUP 1 Term Hangup detected on controlling terminal or death of controlling process SIGINT 2 Term Interrupt from keyboard SIGQUIT 3 Core Quit from keyboard SIGILL 4 Core Illegal Instruction SIGABRT 6 Core Abort signal from abort(3) SIGFPE 8 Core Floating point exception SIGKILL 9 Term Kill signal SIGSEGV 11 Core Invalid memory reference SIGPIPE 13 Term Broken pipe: write to pipe with no readers SIGALRM 14 Term Timer signal from alarm(2) SIGTERM 15 Term Termination signal SIGUSR1 30,10,16 Term User-defined signal 1 SIGUSR2 31,12,17 Term User-defined signal 2 SIGCHLD 20,17,18 Ign Child stopped or terminated SIGCONT 19,18,25 Continue if stopped SIGSTOP 17,19,23 Stop Stop process SIGTSTP 18,20,24 Stop Stop typed at tty SIGTTIN 21,21,26 Stop tty input for background process SIGTTOU 22,22,27 Stop tty output for background process Proces s PID 1, kdy vznika, co dela, odkud cte konfiguraci. $ ps -p 1 PID TTY TIME CMD 1 ? 00:00:00 init Init is the parent of all processes. Its primary role is to create processes from a script stored in the file /etc/inittab identifikace procesu EUID, ... procfs pseudo file system, nezabira misto na disku generuje ho jadro, obsahuje informace o bezicich procesech adresar /proc ls -l /proc total 262150 dr-xr-xr-x 5 root root 0 2006-12-15 11:31 1 dr-xr-xr-x 5 root root 0 2006-12-15 11:31 10 dr-xr-xr-x 5 root root 0 2006-12-15 11:31 101 dr-xr-xr-x 5 root root 0 2006-12-15 11:31 102 dr-xr-xr-x 5 root root 0 2006-12-15 11:31 103 dr-xr-xr-x 5 root root 0 2006-12-15 11:31 104 dr-xr-xr-x 5 root root 0 2006-12-18 23:58 12341 (...) ls -l /proc/1 total 0 dr-xr-xr-x 2 root root 0 2006-12-18 23:57 attr -r-------- 1 root root 0 2006-12-18 23:57 auxv -r--r--r-- 1 root root 0 2006-12-18 13:31 cmdline lrwxrwxrwx 1 root root 0 2006-12-18 23:57 cwd -> / -r-------- 1 root root 0 2006-12-18 23:57 environ lrwxrwxrwx 1 root root 0 2006-12-18 23:57 exe -> /sbin/init dr-x------ 2 root root 0 2006-12-18 23:57 fd -r--r--r-- 1 root root 0 2006-12-18 23:57 maps -rw------- 1 root root 0 2006-12-18 23:57 mem -r--r--r-- 1 root root 0 2006-12-18 23:57 mounts -r-------- 1 root root 0 2006-12-18 23:57 mountstats -rw-r--r-- 1 root root 0 2006-12-18 23:57 oom_adj -r--r--r-- 1 root root 0 2006-12-18 23:57 oom_score lrwxrwxrwx 1 root root 0 2006-12-18 23:57 root -> / -rw------- 1 root root 0 2006-12-18 23:57 seccomp -r--r--r-- 1 root root 0 2006-12-18 23:57 smaps -r--r--r-- 1 root root 0 2006-12-18 23:57 stat -r--r--r-- 1 root root 0 2006-12-18 23:57 statm -r--r--r-- 1 root root 0 2006-12-18 13:31 status dr-xr-xr-x 3 root root 0 2006-12-18 23:57 task -r--r--r-- 1 root root 0 2006-12-18 23:57 wchan jak jdou po sobě: kernel, shell, bootloader, init, shell, getty, login, rc skripty a ls 1) bootloader 2) kernel 3) init 4) rc skripty 5) getty 6) login 7) shell 8) ls Zkuste to opravit, jsem to vymyslel jen tak ;) Jaka je navratova hodnota exec nebo co vlastne exec udela? Exec peepise vykonny kod, takze se premaze ten puvodni. (nahraje do paměti soubor spustitelný a pak hupne na entry point - není z ní žádný návrat pokud proběhne jak má) Pokud se navrátí bude to například protože nenašla soubor a návratový kód bude asi -1 a errno zjistíme co bylo za problém ;) ls | grep ddd 2>&1 | wc –l $ ls | grep ddd 2>&1 | wc -l 0 Mame 4 sitova spojeni a chceme je obslouzit pak taky chceme cekam na reakci z klavesnice, jak to vsechno udelat. Musi to byt pasivni cteni, tedy ne v cyklu. Zde staci odpoved, select - tim lze udelat uplne vse, jsou i jine moznosti napr pool (nebo neco takovyho)